<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数绑定</title>
</head>
<body>
<script>

    /*
    * 在JS中this是动态
    * 直接在全局定义的函数如果进行直接的调用的话那么this是window如果开启了严格模式的话this是undefined
    * 要注意函数在进行传递的时候可能会产生this丢失的问题 尤其是定义在对象/类中的方法进行传递调用的话
    * 我们可以使用bind在传递之前对函数的调用者进行硬绑定，这样的话不管之后如果进行调用this都不会改变
    *
    * */





 class Person {
     constructor(age) {
         this.age = age
     }


     getAge(){
         console.log(this.age)
     }
 }

 function  foo(f,ms){
     return function (){
         setTimeout(()=>{
             f()
         },ms)
     }
 }


 let person = new Person(22)
Age = person.getAge.bind(person)
    getAge()

 foo = foo(person.getAge.bind(person),1000)
 foo()



</script>
</body>
</html>